#定义一个空集合
set1=set()
print(type(set1))

fruit={'apple','banana','orange'}#元组和集合都是用大括号定义
print(fruit)
print(fruit.add('grape'))  #错误，add函数无返回值
print(fruit)

fruits={'apple','banana','orange'}
x=fruits.copy()   #copy完之后，x和fruits的id是不同的
print(x)
print(id(fruits))
print(id(x))

x={'apple','banana','orange'}
y=['grape','pear','peach','apple']
z=x.difference(y)  #返回x中不在y中的元素,这个函数返回的是一个新的集合，x不会变
print(z)
print(x)
print(id(x))
print(id(z))
print('`'*50)

z=x.difference_update(y)#这个函数直接修改x，返回None
print(z)
print(x) #x只剩下和y不同的元素

print('`'*50)

fruits={'apple','banana','orange'}
fruits.discard('orange')  #删除元素，如果元素不存在，不报错
print(fruits)
fruits.remove('banana')  #删除元素，如果元素不存在，报错
print(fruits)

#返回集合的交集
x={'a','b','c'}
y={'b','c','d'}
z={'b','c','e'}
result=x.intersection(y,z)
print(result)
syn=x.symmetric_difference(y)  #返回两个集合的对称差，即x和y中不同的元素
print(syn)

z=x.union(y)  #返回两个集合的并集
print(z)

print('`'*50)
fruits={'apple','banana','orange'}
print('apple' in fruits)
print('cherry' in fruits)
#可以对集合用运算符进行操作
x = {"apple", "banana", "cherry"}
y = {"google", "runoob", "apple"}
z = x.union(y)
print('apple' in z)
print(x - y)
print(x | y)
print(x & y)
print(x ^ y)

my_tuple =tuple (x for x in range(10))  # 元祖生成式
print(my_tuple)
my_set = {x for x in 'abracadabra' if x not in 'abc'}
print(my_set)
print(len(my_set))